﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NakedObjects;
using System.ComponentModel;
using NakedObjects.Value;

namespace RTC.Modelo.Entidades
{
    [DisplayName("Fichero")]
    public class Fichero: Entidad
    {

        public string IconName()
        {
            return "memo.png";
        }

        #region Atributos
        [Hidden]
        public virtual int Id { get; set; }

        [MemberOrder(10),Disabled]
        public virtual Experiencia Experiencia { get; set; }

        [MemberOrder(20), DisplayName("Nombre del Fichero")]
        public virtual string Nombre { get; set; }

        [DisplayName("Fichero")]
        public virtual FileAttachment Attachment
        {
            get
            {
                if (AttContent == null) return null;
                return new FileAttachment(AttContent, AttName, AttMime);
            }
        }

        [Hidden,Disabled, DisplayName("Fecha Modificacion")]
        public virtual DateTime ModifiedDate { get; set; }

        #endregion

        [Hidden]
        public virtual byte[] AttContent { get; set; }

        [Hidden]
        public virtual string AttName { get; set; }

        [Hidden]
        public virtual string AttMime { get; set; }

        public void AddOrChangeAttachment(FileAttachment newAttachment)
        {
            AttContent = newAttachment.GetResourceAsByteArray();
            AttName = newAttachment.Name;
            AttMime = newAttachment.MimeType;
        }

        #region Comentario (collection)
        private ICollection<ComentarioFichero> _Comentario = new List<ComentarioFichero>();

        public virtual ICollection<ComentarioFichero> Comentario
        {
            get
            {
                return _Comentario;
            }
            set
            {
                _Comentario = value;
            }
        }

        [DisplayName("Eliminar Comentario")]
        public void RemoveFromComentario(ComentarioFichero value)
        {
            if (_Comentario.Contains(value))
            {
                _Comentario.Remove(value);
            }
        }

        public IList<ComentarioFichero> Choices0RemoveFromComentario()
        {
            return _Comentario.ToList();
        }

        [DisplayName("Nuevo Comentario")]
        public virtual ComentarioFichero CrearComentarioCentroEstudio()
        {
            ComentarioFichero c = Container.NewTransientInstance<ComentarioFichero>();
            c.Fichero = this;
            return c;
        }

        #endregion



        [Hidden]
        protected override void SetModifiedDate()
        {
            ModifiedDate = DateTime.Now;
        }
    }
}
